{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Populating the interactive namespace from numpy and matplotlib\n"
     ]
    }
   ],
   "source": [
    "%pylab inline\n",
    "import matplotlib.pyplot as plt\n",
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "import numpy.random as rng\n",
    "import pandas.io.data as web\n",
    "import numpy as np\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# we modify this data organizing slightly to get two symbols\n",
    "def get_prices(symbol):\n",
    "    start, end = '2007-05-02', '2016-04-11'\n",
    "    data = web.DataReader(symbol, 'yahoo', start, end)\n",
    "    data=pd.DataFrame(data)\n",
    "    prices=data['Adj Close']\n",
    "    prices=prices.astype(float)\n",
    "    return prices\n",
    "\n",
    "def get_returns(prices):\n",
    "        return ((prices-prices.shift(-1))/prices)[:-1]\n",
    "    \n",
    "def get_data(list):\n",
    "    l = []\n",
    "    for symbol in list:\n",
    "        rets = get_returns(get_prices(symbol))\n",
    "        l.append(rets)\n",
    "    return np.array(l).T\n",
    "\n",
    "def sort_data(rets):\n",
    "    ins = []\n",
    "    outs = []\n",
    "    for i in range(len(rets)-100):\n",
    "        ins.append(rets[i:i+100].tolist())\n",
    "        outs.append(rets[i+100])\n",
    "    return np.array(ins), np.array(outs)\n",
    "        \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "symbol_list = ['C', 'GS']\n",
    "rets = get_data(symbol_list)\n",
    "ins, outs = sort_data(rets)\n",
    "ins = ins.transpose([0,2,1]).reshape([-1, len(symbol_list) * 100])\n",
    "div = int(.8 * ins.shape[0])\n",
    "train_ins, train_outs = ins[:div], outs[:div]\n",
    "test_ins, test_outs = ins[div:], outs[div:]\n",
    "\n",
    "#normalize inputs\n",
    "train_ins, test_ins = train_ins/np.std(ins), test_ins/np.std(ins)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "sess = tf.InteractiveSession()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "positions = tf.constant([-1,0,1]) #long, neutral or short\n",
    "num_positions = 3\n",
    "num_symbols = len(symbol_list)\n",
    "num_samples = 20\n",
    "\n",
    "\n",
    "# define placeholders \n",
    "x = tf.placeholder(tf.float32, [None, num_symbols * 100])\n",
    "y_ = tf.placeholder(tf.float32, [None,  num_symbols])\n",
    "\n",
    "# define trainable variables\n",
    "W = tf.Variable(tf.random_normal([num_symbols * 100, num_positions * num_symbols]))\n",
    "b = tf.Variable(tf.random_normal([num_positions * num_symbols]))\n",
    "\n",
    "# we define our model: y = W*x + b\n",
    "y = tf.matmul(x, W) + b # y is tensor of shape [num_inputs, num_positions * len(symbol_list)]\n",
    "# a row of y will look like [prob_symbol_1_short, prob_symbol_1_neutral, prob_symbol_1_long, prob_symbol_2_short, ...]\n",
    "# note that they are not really probabilities because I did not perform a softmax yet\n",
    "\n",
    "\n",
    "# loop through symbol, taking the columns for each symbol's bucket together\n",
    "pos = {}\n",
    "sample_n = {}\n",
    "sample_mask = {}\n",
    "symbol_returns = {}\n",
    "relevant_target_column = {}\n",
    "for i in range(num_symbols):\n",
    "    # isolate the buckets relevant to the symbol and get a softmax as well\n",
    "    symbol_probs = y[:,i*num_positions:(i+1)*num_positions]\n",
    "    symbol_probs_softmax = tf.nn.softmax(symbol_probs) # softmax[i, j] = exp(logits[i, j]) / sum(exp(logits[i]))\n",
    "    # sample probability to chose our policy's action\n",
    "    sample = tf.multinomial(tf.log(symbol_probs_softmax), num_samples)#sample = tf.argmax(symbol_probs_softmax, 1) #use a real sample\n",
    "        #pos[i] = tf.reshape(sample, [-1]) - 1   # choose(-1,0,1)\n",
    "        # get returns by multiplying the policy (position taken) by the target return for that day\n",
    "        #symbol_returns[i] = tf.mul(tf.cast(pos[i], float32),  y_[:,i])\n",
    "    # isolate the probability of the selected policy (for use in calculating gradient)\n",
    "    for sample_iter in range(num_samples):\n",
    "        sample_n[i*num_samples + sample_iter] = sample[:,sample_iter]\n",
    "        pos[i*num_samples + sample_iter] = tf.reshape(sample_n[i*num_samples + sample_iter], [-1]) - 1\n",
    "        symbol_returns[i*num_samples + sample_iter] = tf.mul(\n",
    "                                                            tf.cast(pos[i*num_samples + sample_iter], float32), \n",
    "                                                             y_[:,i])\n",
    "        \n",
    "        sample_mask[i*num_samples + sample_iter] = tf.cast(tf.reshape(tf.one_hot(sample_n[i*num_samples + sample_iter], 3), [-1,3]), float32)\n",
    "        relevant_target_column[i*num_samples + sample_iter] = tf.reduce_sum(\n",
    "                                                    symbol_probs * sample_mask[i*num_samples + sample_iter],1)\n",
    "    \n",
    "\n",
    "\n",
    "daily_returns_by_symbol_ = tf.concat(1, [tf.reshape(t, [-1,1]) for t in symbol_returns.values()])\n",
    "daily_returns_by_symbol = tf.transpose(tf.reshape(daily_returns_by_symbol_, [-1,2,num_samples]), [0,2,1]) #[?,5,2]\n",
    "daily_returns = tf.reduce_mean(daily_returns_by_symbol, 2) # [?,5]\n",
    "\n",
    "total_return = tf.reduce_prod(daily_returns+1, 0)\n",
    "z = tf.ones_like(total_return) * -1\n",
    "total_return = tf.add(total_return, z)\n",
    "\n",
    "\n",
    "ann_vol = tf.mul(\n",
    "    tf.sqrt(tf.reduce_mean(tf.pow((daily_returns - tf.reduce_mean(daily_returns, 0)),2),0)) ,\n",
    "    np.sqrt(252)\n",
    "    )\n",
    "sharpe = tf.div(total_return, ann_vol)\n",
    "#Maybe metric slicing later\n",
    "#segment_ids = tf.ones_like(daily_returns[:,0])\n",
    "#partial_prod = tf.segment_prod(daily_returns+1, segment_ids)\n",
    "\n",
    "\n",
    "training_target_cols = tf.concat(1, [tf.reshape(t, [-1,1]) for t in relevant_target_column.values()])\n",
    "ones = tf.ones_like(training_target_cols)\n",
    "gradient_ = tf.nn.sigmoid_cross_entropy_with_logits(training_target_cols, ones)\n",
    "\n",
    "gradient = tf.transpose(tf.reshape(gradient_, [-1,2,num_samples]), [0,2,1]) #[?,5,2]\n",
    "\n",
    "#cost = tf.mul(gradient , daily_returns_by_symbol_reshaped)\n",
    "#cost = tf.mul(gradient , tf.expand_dims(daily_returns, -1))\n",
    "#cost = tf.mul(gradient , tf.expand_dims(total_return, -1))\n",
    "cost = tf.mul(gradient , tf.expand_dims(sharpe, -1))\n",
    "\n",
    "optimizer = tf.train.GradientDescentOptimizer(0.05).minimize(cost)\n",
    "costfn = tf.reduce_mean(cost)\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# calculate the performance metrics for the data chosen\n",
    "#daily_returns_by_symbol = tf.concat(1, [tf.reshape(t, [-1,1]) for t in symbol_returns.values()])\n",
    "#daily_returns = tf.reduce_sum(daily_returns_by_symbol,1)/2\n",
    "#total_return = tf.reduce_prod(daily_returns + 1)\n",
    "#ann_vol = tf.mul(\n",
    " #   tf.sqrt(tf.reduce_mean(tf.pow((daily_returns - tf.reduce_mean(daily_returns)),2))) ,\n",
    " #   np.sqrt(252)\n",
    " #   )\n",
    "#sharpe = total_return / ann_vol\n",
    "\n",
    "'''\n",
    "# since we only train the sampled classes, we will combine them so that we can feed them into cross entropy\n",
    "training_target_cols = tf.concat(1, [tf.reshape(t, [-1,1]) for t in relevant_target_column.values()])\n",
    "# we want to either push the gradient toward our selection or away from it. We use these ones to find the direction\n",
    "#     of the gradient, which we will then multiply by our fitness function\n",
    "ones = tf.ones_like(training_target_cols)\n",
    "\n",
    "# this isnt actuall a gradient, but karpathy sort of calls it one. Since it is a tensor it sort of is a gradient anyway\n",
    "gradient = tf.nn.sigmoid_cross_entropy_with_logits(training_target_cols, ones)\n",
    "\n",
    "# how should we do this step? it depends how we want to group our results. Choose your own adventure here by uncommenting a cost fn\n",
    "# this is the most obvious: we push each weight to what works or not. Try it out...we're gonna be RICH!!!! oh, wait...\n",
    "#cost = tf.mul(gradient , daily_returns_by_symbol)\n",
    "# this takes the overall daily return and pushes the weights so that the overall day wins. Again, it overfits enormously\n",
    "#cost = tf.mul(gradient , tf.reshape(daily_returns,[-1,1]))\n",
    "# this multiplies every gradient by the overall return. If the strategy won for the past ten years, we do more of it and vice versa\n",
    "cost = tf.mul(gradient , total_return)\n",
    "# for printing\n",
    "costfn = tf.reduce_mean(cost)\n",
    "\n",
    "# minimize the cost (push the weights where we want them to go)\n",
    "optimizer = tf.train.GradientDescentOptimizer(0.05).minimize(cost)\n",
    "'''\n",
    "print()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor 'Mean_50:0' shape=() dtype=float32>"
      ]
     },
     "execution_count": 130,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "costfn\n",
    "#gradient_\n",
    "#total_return"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor 'Add_1:0' shape=(20,) dtype=float32>"
      ]
     },
     "execution_count": 113,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ann_vol\n",
    "total_return"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 0100 cost= 4.0075 total return= 0.410749108 sharpe= 1.227803946\n",
      "Epoch: 0200 cost= 5.79791 total return= 0.325742573 sharpe= 0.908009708\n",
      "Epoch: 0300 cost= 29.9439 total return= 1.916382551 sharpe= 5.669203281\n",
      "Epoch: 0400 cost= 30.9742 total return= 2.846206665 sharpe= 8.231985092\n",
      "Epoch: 0500 cost= 14.2515 total return= 2.010600805 sharpe= 5.734219074\n",
      "Epoch: 0600 cost= 36.9297 total return= 2.298950195 sharpe= 6.386272430\n",
      "Epoch: 0700 cost= 17.9175 total return= 1.090037107 sharpe= 2.921367884\n",
      "Epoch: 0800 cost= 22.0439 total return= 0.870501816 sharpe= 2.314534664\n",
      "Epoch: 0900 cost= 265.804 total return= 5.780017376 sharpe= 15.342338562\n",
      "Epoch: 1000 cost= 336.977 total return= 7.407339573 sharpe= 18.710979462\n",
      "Epoch: 1100 cost= 261.297 total return= 7.243052483 sharpe= 18.231023788\n",
      "Epoch: 1200 cost= 166.946 total return= 4.330142975 sharpe= 11.005815506\n",
      "Epoch: 1300 cost= 133.772 total return= 3.356940508 sharpe= 8.886281013\n",
      "Epoch: 1400 cost= 130.561 total return= 3.171287537 sharpe= 8.084554672\n",
      "Epoch: 1500 cost= 280.925 total return= 5.933093548 sharpe= 15.260545731\n",
      "Epoch: 1600 cost= 141.71 total return= 1.981608987 sharpe= 5.255846024\n",
      "Epoch: 1700 cost= 229.812 total return= 3.756299973 sharpe= 9.602984428\n",
      "Epoch: 1800 cost= 368.397 total return= 6.263023853 sharpe= 16.065864563\n",
      "Epoch: 1900 cost= 196.461 total return= 4.329125404 sharpe= 11.169312477\n",
      "Epoch: 2000 cost= 264.657 total return= 5.718810081 sharpe= 14.863568306\n"
     ]
    }
   ],
   "source": [
    "# initialize variables to random values\n",
    "init = tf.initialize_all_variables()\n",
    "sess.run(init)\n",
    "# run optimizer on entire training data set many times\n",
    "train_size = train_ins.shape[0]\n",
    "for epoch in range(2000):\n",
    "    start = rng.randint(train_size-50)\n",
    "    batch_size = rng.randint(2,75)\n",
    "    end = min(train_size, start+batch_size)\n",
    "    \n",
    "    sess.run(optimizer, feed_dict={x: train_ins[start:end], y_: train_outs[start:end]})#.reshape(1,-1).T})\n",
    "    # every 1000 iterations record progress\n",
    "    if (epoch+1)%100== 0:\n",
    "        t,s, c = sess.run([ total_return, sharpe, costfn], feed_dict={x: train_ins, y_: train_outs})#.reshape(1,-1).T})\n",
    "        t = np.mean(t)\n",
    "        s = np.mean(s)\n",
    "        print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\",c, \"total return=\", \"{:.9f}\".format(t), \n",
    "             \"sharpe=\", \"{:.9f}\".format(s))\n",
    "        #print(t)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 150,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# in sample results\n",
    "#init = tf.initialize_all_variables()\n",
    "#sess.run(init)\n",
    "d, t = sess.run([daily_returns, total_return], feed_dict={x: train_ins, y_: train_outs})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x14daeb630>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# equity curve\n",
    "for i in range(5):\n",
    "    plot(np.cumprod(d[:,[i]]+1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 152,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "#out of sample results\n",
    "d, t = sess.run([daily_returns, total_return], feed_dict={x: test_ins, y_: test_outs})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAEACAYAAABbMHZzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4HNW5+PHvmdnZvuqyrGbLVXKhGBcwGNuBFEoghSSE\nS8r9pUAK6bk3ubnhAoGbRpIbSCEhCYSQBJJAIIRegsE0G2Owca+yqtWlXW2fmfP7Y4UsWZJVLGu1\n1vk8jx+smTOzr/Dq1dkz57xHSClRFEVRphYt3QEoiqIoE08lf0VRlClIJX9FUZQpSCV/RVGUKUgl\nf0VRlClIJX9FUZQpaNjkL4S4QwjRJIR4c4jzVwohtgghtgohXhRCnNrn3AVCiF1CiL1CiG+MZ+CK\noijK2I2k538ncMExzh8AVkspTwVuBG4HEELowM97rl0IXCGEWHB84SqKoijjYdjkL6VcD3Qc4/zL\nUsquni83AGU9f18B7JNSVkspk8C9wHuOM15FURRlHIz3mP8ngUd7/l4K1PY5V9dzTFEURUkzx3jd\nSAjxNuATwDk9h1TdCEVRlElqXJJ/z0Pe3wAXSCnfGiKqB8r7NCsn1fs/+lr1S0JRFGUMpJRirNce\n97CPEGIG8HfgI1LKfX1ObQLmCSEqhBBO4HLgocHuIaWcVH+uu+66tMeQKXGpmFRMUyGuyRjT8Rq2\n5y+EuAdYAxQIIWqB6wCjJ2n/GvgfIBe4TQgBkJRSrpBSmkKIa4AnAB34nZRy53FHrCiKohy3YZO/\nlPKKYc5/CvjUEOceAx4bW2iKoijKiaJW+A5i7dq16Q5hUJMxLhXTyKiYRm4yxjUZYzpeYjzGjo4r\nACFkumNQFEXJNEIIZDof+CqKoiiZRyV/RRmlGz9wL9FIMt1hKMpxUclfUUbp3Pun8+f/ezHdYSjK\ncVHJX1FGIZm0AOh4fHeaI1GU46OSv6KMQntTNwDztpTwi289SWd7lHt/sSHNUSnK6Knkryij0Hq4\ng6gbXlkTwf+7Rm657F6mXxNNd1iKMmoq+SvKKLQ2dhL2weYPCYqCpczaZ6Q7JEUZE5X8FWUUgm3d\nWA6LP17yTjafATPqyoa/SFEmIZX8FWUUutvDJA2bwpwcqivb0x2OooyZSv6KMgrhYBTTkVqRXrY0\nNfPHUj9FSgZSb1tFGYV4KI7pSCX9D128ko/dBXFXmoNSlDFQyV9RRiERSWI5bAAqZ87kiyUCV1zV\nplIyj0r+ijIKZtTs7fkLIfjsyuUAqtyDknFU8leUUbBjFlZP8gfwetwknNDc0JnGqBRl9FTyV5RR\nsOM2ln4k+QtNI+FMLf5SlEyikr+ijIJM0C/5AySdkvbDXWmKSFHGRiV/RRkFkQT76OTvkITaw2mK\nSFHGZtg9fBVF6cPU+o35AyQNG6sznqaAFGVsVM9fUUZBMwVSt/sdswybSFAVd1Myi0r+ijIKmqlh\nO/onf1O3iXcn0hSRooyNSv6KMgqapSOPTv6GRTKskr+SWVTyV5RBPHn/Dm752mNYVv9Er5s6GP1X\n9Fq6hRXr305RJjuV/BVlEAe++DKn/cTDU3/f0e+4bulwVAl/y2Fhxfo/BFaUyU4lf0U5SjxmUtE2\nk12Vkr1PvdnvnG7pCGf/9pZuIxOqvo+SWVTyV5SjPPKnN2jPg4OzY0T3hXqPb3qhhpLaAK7y/tnf\ndpigSvsoGUYlf0U5yv6/b2FPlY3uasHdnhrjefierXSu2cPmFVFOfe/cfu0t3YakSEeoijJmwyZ/\nIcQdQogmIcSbQ5yvEkK8LISICSG+dtS5aiHEViHE60KIjeMVtKKcSL6DGl3TWtELkhQ25/LGhjpq\n1m1nz8IET386ydtXruzX3tYshJmmYBVljEbS878TuOAY59uALwA/GuScBNZKKZdIKVeMIT5FmTCW\nZXP9qjsoq5uOf06SipUFSGHw5L8/Qqixm85skyff9z500b+XbxsWWlJPU9SKMjbDJn8p5XpgyJKF\nUsoWKeUmhh71VJ+HlUmvrrqTX37rKc59eQaG6eT8iypZ+44z+PFX3ZR0FyA6wXKF8TsGVkRJ+i3c\nYVUpRcksJ/odK4GnhRAW8Gsp5W9O8Ospyqj94ScvUvjNELM1kx98w2DvPJsdy5bgcbn4rPs1AqEA\nznCIcMkQ9XtywbvDM7FBK8pxOtHJ/xwpZaMQohB4Sgixq+eThKJMGskf7eXRD+n841IXlzhNPlxc\njMeV2pj3zDVVNEYa8Qe9dFSFBr0+UOrGF1bJX8ksJzT5Sykbe/7bIoR4AFgBDEj+119/fe/f165d\ny9q1a09kWIoCwK+ue4bgnw9yelsFmy/u4sEL38lpfn+/Mf35lXN4o6iR0vpcWvIig96nYlERrqAa\n3VROrHXr1rFu3bpxu994Jv9+734hhBfQpZQhIYQPeCdww2AX9k3+ijJRoo/uZsW+hWxfZPGdi99B\nfiAwoI3LMGiZlqC8zkVhRdag91mych774wdobQpTUOQ70WErU9TRHeMbbhg0nY7YsMlfCHEPsAYo\nEELUAtfRs8BdSvlrIcR04FUgC7CFEF8CFgLTgL+LVC/KAfxJSvnkcUWrKOOoOzeVqGsqwuRnDZ7Y\nAdZ9sJmDFeV8dNWsQc+Xl5eyMf8Am5/diyvLy3O3b+J9317LKctKTkjcijIehk3+Usorhjl/GCgf\n5FQ3cPoY41KUE84TsnnhHAie2XbMdp++4BSuWNrCd0+pHPS84XDQmWNy6OaNnLl5Pqsp4bnilzll\n2WUnImxFGRdqfpoyZRkxgzfODPOp9yw9ZrtLTj+d7mHuFQ7Emd585NNDNKb29FUmN5X8lSnLmXAy\nL3iYtadefNz3ivoiTGsp4E//BqX14ImpQm/K5KaSvzJlueJOnFnjszI36YviiTooiNTii/kxVX1/\nZZJThd2UKcsdc+IvdI/LvWQgVdzH6UmASEBc9fyVyU31/JUp5+7/e4loMEZB1KCgLGdc7ukqSH2C\n8BY5sGpMRFL1q5TJTSV/ZcoJ/3Q782tno0kDY37BuNxz2uzs1H9n5dL4eieaKvGsTHKqe6JMOSWd\n5Tx7XmpMfv7iwWYpj96pK2dh6rBw2Uxsh42mev7KJKfeocqUsumFGoRtsOXtrQDk5eeNy32rFs/h\n43fBglNmIx1Waq9fRZnEVPJXpozWpjAHLt7AzoXwpXdV8bZnQdfG50cgy+/ne1UBAn4/GBLNVMlf\nmdzUmL8yZWx76QAesnj404f5zyXncyAyeKG2sRBC8LGlPYvFnOBQyV+Z5FTyV6aMQztqMAvc/Ozi\n8wCY5fWekNcRLtBN9aOlTG5q2Ec5+UgJ27YNONxV30nck+C04uIT+vK6W1Nj/sqkp5K/cnK49lo4\ncCD19698BeuUpWy6u//WEbGWGHFX4oSHYngdOJKq569Mbir5K5mvpQVuugkefxwaG4ndcR/PeG6h\n/vM7+jWzgzYJ9xBbMY4jl9/AUGP+yiSnuidK5rv3Xl7gIawHNrCm/Xc8a3+LbVUFzK3292umRQWJ\nCej5u/wuHGqevzLJqXeokvF2P7QTkwCtLRotP3mYsDGbP3xvGoGgi2TS6m3niDqw3MkTHk8gz4uR\nVD1/ZXJTyV/JeId2pOrox5N+3pQX8vClBk+sPJ1uP2x7ta63nTPuRHqsoW4zbnIK/Riq569Mcuod\nqmS8Zu8sds8HZ3c+8dhZyMtzKMnKoq3AZucLe3rbueIu9MCJr7mTX5SFkVC1fZTJTSV/JePpiTx2\nz4+TVzeLNxdrfH11arvFUFacph2Nve3cUReefNcJj6d4RgHOhKC1KXzCX0tRxkolfyWzBYO4wn5a\nqkCzNbafanOKP/WgN+KLkmiMAdDeGqGw2cPclUUnPKTC4nx2VUnu/eG6E/5aijJWKvkrGc06WI0/\n6GL+20sA8Kw8MsMnkhfG3WQAcN8tL1AzU7J89WknPCa3y8XuRUG8f2njqQd2nvDXU5SxUMlfyWg1\nT2wm6hG87+wKfvtJ+NB7qnrP2bMspjXnAhB86iB7KqOUTps2IXG5VwbB42XLdc9NyOspymip5K9k\ntNr1e2kulCz0++n4Yh5n5x3ZmWv5OyrIawvQ2hQmu80PuW0TFtcn3/827v2og5K2iflloyijpZK/\nktE6qk0aShJoQvDIqafi1o/Mr1+zehk1M+Dh375CTlcO02ZO3JrGBeXlfOpUHwWt2XS2RyfsdRVl\npFTyVzLX5s3YoXyaSgdftZsXCLBnQZS2B/eR0+Fh+XlzJzS889Yso7oCHp39z36LzRRlMlDJX8lc\nX/oS3bKCZKVnyCbxilYWbJ9BawEsXbZ4AoODgtxcfnx9BwGZxUtP7pvQ11aU4ajkr2Ssva8VU9CU\nz8KzS4dsc867StlbCTsXJcjy+4dsd6I8cMH57JnrYOs/Xp/w11aUY1HJX8lMsRh1XMIdn4JLVlUM\n2ezCt53DD260eOUT7RMXWx8Lc3Ppyu8ivrMrLa+vKENRVT2VzFRdTVQU43lfHrM9Qw/7ZHm9VF90\nERErfWPu8bwQvq0nZtcwRRmrYXv+Qog7hBBNQog3hzhfJYR4WQgRE0J87ahzFwghdgkh9gohvjFe\nQStKw/ptCFvnppVVaOLYdXScmkaOYUxQZAN5syWuuC9tr68ogxnJsM+dwAXHON8GfAH4Ud+DQggd\n+HnPtQuBK4QQC8YYp6L0s/+5vTQUS8o87nSHMqzsLCe6deJrCinKaAyb/KWU64GOY5xvkVJuAo4u\nlL4C2CelrJZSJoF7gfccT7CK8pbWPV20FSSG7fVPBr5cN86Equ+vTC4n8oFvKVDb5+u6nmOKctxk\np5uWghO/Mct4yJmWpZK/MumcyAe+cqQNr7/++t6/r127lrVr156AcJSMVlcHt9wCN98Mzz8P4Rm0\nLEjfOP5oFJbm0h0LYlk2uq4m2Cljs27dOtatWzdu9xNSDp+jhRAVwD+llKcco811QLeU8sc9X58F\nXC+lvKDn6/8CbCnlD466To4kBmWKu/FG7B/+GO31TdjLlvOwfS+b/1jE9Zeenu7IhrV/1yEOnHIA\nwxRs/VqML/7oWI/QFGVkhBBIKcc87jme3ZCjg9gEzBNCVAghnMDlwEPj+HrKyeS+++Caa4Y8Xffz\ndbzW/UPsa6/jn74vk3Q4eP/aORMY4NiVzCjs/bvxjxr++cctvLGh7hhXKMqJN5KpnvcALwGVQoha\nIcQnhBBXCyGu7jk/XQhRC3wF+LYQokYI4ZdSmsA1wBPADuAvUkpV3FwZVPc9D9H2xKCzicGyqAuv\nIqjPpf0v+4jET+X71+ksDkz8it2xcHs8RHuWIsyqm0Xgox08/tlH0huUMuUNO+YvpbximPOHgfIh\nzj0GPDa20JQpQUqIxah5VCOWuIB8KeHoGTxtbXTaZ2E7BdvkZ/nblVl88gPzMmKmD6Q+nsfcEiMp\n+NU1YYprczjjjax0h6VMcerpkzK+vv/91EPZkfrKVyAnhx25azmUeyocPjygSXD3IRwJN7srJcQq\nmHlhAZ8pzayJYwmXTVe25JTz3dQtbSG/NTvdISlTnEr+yriy/+vbWN/94Yjbtz+wkd+861bcnWX4\nuzxENr4xoM2BF/fSkQuHC+PUlcJnVs8bz5AnRNxlEfGZ3HTBBXzz3FkEgm5+f/N69u1sSXdoyhSl\nkr8yrl7nVl7pvnZkjTs7qa6/iNgWH3+5AloKwbz8i7BlS79mNbtb6MyxaJkp2bzEZP4xavlMVkmn\nRdSbWpewdMkpPHO+xPO/h/jX29TYv5IeKvkr4yrEQjrcI+uZWy9voMGzjF/9cAbJrxZTV2Lz8MxP\nYN52e792HU0xQoEk8761kPqbihAZMtbfV9JpEvOkNp3xuFys+2QHV/6thOJIMTdedg8/vOpBnrx/\nR5qjVKYSlfyV8ROLAVBfMrLFV3ue2EHSYfDnC5dw76JFvHIh6C0Labh7f792iS5Btz/O58vLuHVB\n5biHPRGSjiQJV7z36w0f+ABdq8/hts/ZlG0KUf73ILu+8XwaI1SmGpX8lfFz8CAAoaz4MA1Tdrwe\nZFeV5JSeKZurrqrkrk8H2Ou4BNqObLYuoy6i/iRZDgdFTuf4xz0BLKeJ6e7//8XncrFqteR/by3i\n7qsKcBkFaYpOmYpU8lfGTe2LuwAQIjai9q2Wj4Szu3fK5lfLy1lxWSlWrJLkG0fm/DviXmI54x/v\nRKpZ3k146cBaRN+66CL2vec9rGlvxmFmRrkK5eSgNnNRxiwajLIp9wFsu5DWeS/iW1uAm1zcsZFt\nnGIl3Ji5/XvDV51WwYtZ9ex9YCMLz18LgCsawC7OvIe8fa36YCX5vqFr+rsDBkZS/TgqE0e925Qx\ne/ra+4hOy+Opd0U5++ViQi0RKgDdGtkHSi3hJum1+x0rcbk4NMMmsKmFhQDt7bhDWeSdkj/e4U+o\ny1etOuZ5b44HQ1X+VCaQGvZRxqzt2UY2LtPxGWESeg6RCHT7QLdGlsT0hBt7kIWuTdNjRNtS2x4m\nd+0h0OVm1bkV4xj55JMzza/KPisTSiV/ZcyMrumEy0MUeCTOuAsrKujItdFGmPyNhActd+AOV+0V\nGna8FEIh9j38OqEALJ2RN97hTyoFJbk44+rHUZk46t2mjJktcigOgH+6H3fMiYgbBLPMEQ/7OOMu\n/CWBAccLVxViBMvhy1/G/OPjNBTLtO7BOxHKZuXjUslfmUDq3aaMmZFwkp/vZlpFHu6ogZZ0EQrE\nR5b8bRtX1EnhnMIBpy67cD5SOjloF7Ou5J00TM+MHbuOR1FZIboF3aGRTZNVlOOlkr8yZq6Yg8IZ\n+cxZXIY3ouNIuAj7E+jmCN5WH/0o3rCDefMHJv8lWQG2nCrYdP9SZmybzZ5PnPxF0Px+H1EPHD7U\nnu5QlClCzfZRxswd1Zg+v4h584t5zTqIO+oh7h/ZsE/ooY0YyU+xeN7AhU0OTWP9TVmsr3exN8vm\nD6sWnIjwJxVN04i7JfUHm5i7uDjd4ShTgOr5K2MSDUZxJgRzKkvIdTkJBSDQ6cfMFTj69vxtG37x\ni/4Xh0Js6/42G5dDvmvwFbu/WL6Qq94+j3vPPZXVORm+wmuE4i5Ja11nusNQpgiV/JUxqX2zlogX\n8r1uhBB0+21y290YxR50s0/htWAwtT1jONx7yDpYTcgo5+6bXOhDFGmb7/XywWnTOCv75B/yeUvC\nadHZ3JXuMJQpQiV/BYA963fx4q+e6f36wCv7CLYEh2x/aFcDEZ/sTd5xT+qhbO68QozkkYQebmhj\nM7diHarpPXbwX9uJegQvr14+3t9GRks4LSId0XSHoUwRKvkrPDDrehpWH8a65sjGInsv+CtPXHjr\nkNe01LYT9Rwp4/Di6tTfqxYW4TAFWKmv63Y1EOQUatbvhGgUPvYxql85QPM0+6SfvjlaSadJvEvN\n9lEmhkr+Cr7DS7jjE3Haso6UUGjKnU9HfOiFVcGmEDH3keQ//ZtV/PudsGRBEUYSrEiqB1vfM3tl\n/8Zq2LIF6+6/4dywl86cxIn5ZjKYaZiYYRMAy7L5zvvuIdg1siJ5ijJaKvkrJLUAicuy8UR0ql+v\nBsBIeDGiuUNeE+uIEXcdmX9/06xZ3HzRQkr9bmwNoh2pMf72ptTQUXNtlEP3v8h6cT97PUtpKhhZ\n8bepJOJLIJptvv/x+7nx3DtZ/WAxj/7+VaKWhS1lusNTTjIq+U9xlmnhjgluWlpJzUzY/Pv1AHjD\nTvJbc7lvwfWDXmd2S5J9kr9D0/jgtGk4NI2kAe2HU7NWuttTPddYl87Bf9WA9FKxeyHtFeqtd7Su\nkihVm4tZdJ9GeZvNtkVQ++wevOvX8/2amuFvoCijoH4Cp6h/eX/Ci796hub9zSQNKC/Mpr40Su4v\n8tj4xxfwdetkdbkp2LWWDXet770uGU/yjO9mTnumlJhn8JW3SQM6eh4Wx4Kp4Z2sNg2r0cUD74Uv\n/1Jj4TcXnfhvMsP4ZguyQ34ee7ef27+bx45Tghi1qR7/oZga/lHGl0r+U1TEqGTfhoPU7m4g4gOX\nprH7R+VsXgJ7f/Q8MTdsXA6vnWFz4AdHthd8+tr7iRiVfO/Hbmq+M3/QeycNSVfPsE8ykhreqdfn\nsdNzFi1zE3z9PVV8vqzsxH+TGebcC6tIOsCdV8eGyy4jx9tKdntqqqtPVxU/lfGlkv9UZXno6Epy\nuLqFqDtVU/+WxVXsWZjE0zCTrmzJ7be6+dclCZztFb2XtT10iGfe5uJTl53Kfy2vGvTWpiEJB1M9\nVSsGW06F7iyDzgInp7yrlI9Pn45HJbMBVqw4jZv/w2bFhaUAlFQFyA6mCt+p5K+MN1XeYQqyTAtP\nVGCFoKOhC8uderBb5HQSWGyQ94dS9s5LsGPFCu5iF4HvGbTXtZNXlocWKSM2M8S/FRUNeX9Tl4S7\nIqkv4hqNJWEeuL4QTQj+uXjWRHyLGcnrdnPmqhgXrV0LwOnL5xDu7gQJPk3105Txpd5RU1Dz/mZ0\nWyAiGuH2CHGX2XvuPZ9cCcC8vU6cmsZ7z5hL9Ux47jsPACCsbGbmHrsXajpsYt2p+eoi6cCd7GL3\nmWeyc8UK5nq9J+i7OjnceNFFZPX8P1p8+mykEHii4FU9f2WcqZ7/FPPS7f9CL0wNJTjiTuJdSbQ+\nyX9lTg7LfwIlh03WAoVOJ3srYzhe6QDAE3FRXnnsjVVMQyLaUmUKRNKB5bSP2V4ZXHZ2Nh25kNsB\nI5no2ZxI8NO6OiTwH+Xl5KlFdJPWgy0t2MD7CwdWtZ0ow/b8hRB3CCGahBBvHqPNrUKIvUKILUKI\nJX2OVwshtgohXhdCbByvoJWxqdlSQ/Jqk4YDzQAYMRdmxCbp7D9l8zOXz6fy0xW9x0Kzo/jaSkjG\nk/hDDhavOPbQTdxp46hLrRbWk05st5qjPhZCCLoDJnntYI5gnv9Nhw6xLRzmsbY2nu1UBeIms2v2\n7uUD27cj07h+YyTDPncCFwx1UghxETBXSjkPuAq4rc9pCayVUi6RUq44rkiV41a7sx6Jk5ZXawFw\nxt0QhaTRf8rm1SUl/GTu3N6vT/9AJbmtRTy49LvE3DB/5rRjvs7h6RaOQ6l76qaB9A5evE0ZXsQX\nJ7cDkvaxPz11JpPc3dTEr+bP56L8fLb3KaQHcP3Bg/iff54DUVU7aDJISokEmhLpW+k+bPKXUq4H\nOo7R5FLgrp62G4AcIUTfp4HqJ3+SaKxPlVpI1sQJe8EVdyHiGmafYZ/BvHfFfG77rE3h9jV05shh\nx5+bZthoodTHWYdpoPvU6OJYxbyxVPI/Rg/RtG3+1NzMO3JzKXG5WOj1Dkj+m0IhwrZNXXxktYMs\nKXnXli080a42lzkRYrbNQq+XPWn8ZTweD3xLgdo+X9f1HINUz/9pIcQmIcSnx+G1lOMQag4BYHT6\nOVxs44kY6AkHlvPYpRamu1zM/cJs6ksk3YHht1Q0FmdBrBTq6nAmDOySk3vz9RMp4U4l/6GGfTaH\nQrief56v79/P50tTP3aLfD52RCL92u2LRpnldtNpHvsXPcD3Dx3C8dxzvNDVxdf27Tv+b0IZIG7b\nnOr3s+eof6eJNF5dsqF696uklA1CiELgKSHErp5PEv1cf/31vX9fu3Yta3umuinjK9KRmnvvD+VS\nWxqjtN7NtMN+miuH7w3ePGcON87Zhzcy/MfUc985m8C3LZJ33IW/axn5Vel7qJXpTF+Cgtahe/4H\nYzHeU1DA3xcv7j1W6fWyJxJBSokQAktKqmMx3p2fP6LkH+95rUvy83klOHRZb2VspJQkpGSxzzeq\nnv+6detYt27duMUxHsm/Hijv83VZzzGklA09/20RQjwArACOmfyVEyceSiXu7I4s9s3tYNsiF2e8\nXkjzJ0bWM6+t7Cbv8PAzd86vms5TuftouvUZXLGVrHnX7OOKeypz5ZoEtkPzEMm/JZGg8KhZPV5d\nRxeCiG3j03Xq43HyDYMSl2tEyR/gzECA/5gxgwu3bj3u70HpLyElDiE4PyeHfaNI/kd3jG+44Ybj\nimM8hn0eAj4GIIQ4C+iUUjYJIbxCiEDPcR/wTmDIGUPK8bv/w7/AMocewrHCqcTtCzsQWpw3l4XZ\nvAQuXzn4St2jLfifFUR/cvqw7QqcTqorTGri57F7PpyWFRjZN6AMcH6Zi8q9XUP2/JuTyQHJHyDX\n4aAjmRqi2xuNMsfjIcfhoGMEyT9sWby/sJB5Hg/RYR40K6MXt21cmsZZ2dl8ZPr0tMUxkqme9wAv\nAZVCiFohxCeEEFcLIa4GkFI+ChwQQuwDfg18rufS6cB6IcQbwAbgYSnlkyfku1CIh+Pk/2UR9dvr\nh2wj49DeU6U54bc45Zun8befeClxuUb0Gl8oLeXmOXNG1La+LEl3/Cz2zYnjUKtTx6zy0jPwdfuJ\nxwdP2i3JJNOcA/dBznE4env5P6ur49L8/H7HjqXbsvDpOh5NI2JZaZ2OeDKK2zbuSfAzMeywj5Ty\nihG0uWaQYweA4buJyrio3Zp65l6/r5HiqmLW5/6MZYc+RVZhVm8bEdd4fo3JQ5c4uPrcc/nijHKu\nKB55z2M0STwy30nUo2F+On09m5NBzunzsZzVhHZ3wSCFUFsSCc7OyhpwPLenl78/GuWVYJB7Fy7k\nz83NvHnULCBILQ7r+wskbFn4NA1D09CFICklziH2WlZGL27buCbB/8/0//pRxkXNzjoAmg61cWDD\nfrToGTx7wwP92mgJnaxoMzdfsojPzpqBU9MoHWGvf7TO/9xirv69xtfOrTwh958yXC6ivi7YPviU\ny5Yhhn3e6uU/3NbGu/Pzcev6kD3/Za+9xi/q67nr8GEglfz9PdN53+r9v8WWkhWvvUbMUpvxjFWs\nZ9gn3dIfgTIummraAOhoCrJv034AWl9s6ddGTzrQ9ASXFRaS5Tixc+8vmz6NR9++lEpVy+e4xTwx\n3M396/nXxmLsiURSY/6DDPvkGgadpsmjbW1cnJ/annOw5B+zLGrjcb64dy/XHjyIlJJwz4NiSD08\njtg2/75zJ2HL4mAsxquhEE3J4af8Didu27SNw30yTVzKSTHsk/4IlHERbOoGINwW5fC+VkwdZuxY\nzN/e+aPEIUSrAAAgAElEQVTeNrppIF0T8wDPreucEVAPesdDUpdoif7/btdVV1O5cSPbwuEhe/4d\npsnWcJjlPf8OfR8Cv6U2HkcHnJqGIQQbgsHUsE+fnn91LMZdTU1sCAbZ1jNsNB4rU+9raeFze/Yc\n930yTXyS9PzV0suTRLQjNVc/0Z3Ejlu8dDZ0+yVVh478EzuSDoQn/W86ZZSEDUeNskwzDHIcDpK2\nPeRsn5pYjKBp9j7QH6znXx2LsTonhzurqri3uZlfNDT0PvAF8GoaG3rm+q/v6sLRM1bdPA7JP2ia\n7ErjIqd0UcM+yqjEw3H+cfUdQ543u1M9QytsYwZthGjH8gXp8h7ZhN1IGjj86p8800hhI476wBa2\nbW6oqKB79WqMQRJJjsPBplCIuR4PWk/CnuZ00pJM9huvPxSLUeF2M9Pt5jMlJfyztZWaWKx3/wCv\nrrMhGGS2280djY38/vBhvJo2LsM+UdtmbzQ65Tanz5jZPsrksO5Hj5B9RyA1mXYQ8q21IlEQYQMr\nK0pWMo5upnp9yXgSb7cTp1+V+c00UrMRVv/ZIRHLwnuMBJLrcLAxFOKivCML+Hy6zik+Hy8Hg7wt\nNxcpJdvCYSrcbgCyHQ7meDxs7u7u98B3YyjEV8vKyDcMbOClrq5x6flHLIuobdMQj1PWE8NUoGb7\nKKNS0xom7Bp6Ja4WS/2wiriGM+bC9JngShVWe+izd/Ky+wmiXsH8K5dPVMjKOBm0599naGYwuQ4H\nUdtm3lEP3M/PzeWZjlSdxr80N3Pn4cOs7DNVtKxniKjvA9+DsRhVXi9XFBVxZVERczwemhIJvrh3\nL6/2DAnFLIt3b906qjUBby0gS2dxs4m0rbub0199lbiUathHGblwZxx3VCMZH/zjtp4waMuDQIeL\n3LYA5Ag0n4ZuOuh6tpV/vlvyvT/ksmrxjAmOXDleUgzS87ftAdVVf/nfT/GY8zEedz5O8MFqfjZ3\nLp8uLu7XZlV2NhtCqQJ/DYkEnygu5h19Ph30Tf6NdzaSk2pKUZ8ZRUVOJ1vCYX5RX8+t9alFhc93\ndfFIezutoxgOeiv5750iyf/L+/axJRwmZtvMecmk+eG2tMajkn+GsEImui1o3Nkw6HlHwqAt36Ry\n+0yE5SZ37QwcXgdG0oErOJO2xSZvLF9OwSDTApVJTrPR7P7J/62FWG+xLJu8X9ZyuvljZiSfI3Lv\nRq4pK2O2xwPAA7/fzHfedw/FMcHunoesbckk+UdN+S1zuThtGxz6yn52f3I37/5aKvv3Tf7TDIN1\nnZ1ckp/PI21t/LO1lXubUxsE1Y+wZDSkkv9MlyutlS0n0hvdqRl5QdPk7P8Mse2SNyf9Zi7KJGBF\nU2+S2l2DJ38j4SKYnfrB++WXnVzwgeW4Ak6cCQe5rfm87bKF+E/w3H7lBNEkDJb8+/T8//rLDZQE\n3RTe9wUaypNk7evu1/7wDS+x+sFidtyzldZkkm7TpDWZpOComUJlLhfveFZQf2s9DTPC+OssdCC/\nT7uzs7P5fVUVf1ywgD8uWMAN1dVs6e5mtttN/SieBUQti9P8/inR849ZFiHLotAwaEwk0G0LDeg6\nOIk3c1EmBy2W+qdqONg84Fw8HKe0PkDjjFQP6uo1pSzy+fDmesjudBLxaFx8mqqsmamksNGHGPbZ\nt7OF61ffifmdHeS41+F436VQ6Senzd+v/ZzDDgQJtO0HmOfxsCcapTWZ7JfUIZX8O7JSwzHt3h9j\nh2IUOp3ofR5Q+nSdj0+fjt/h4KL8fDYtW8Zry5bxtpycUff8p0ryr08kKHG5yDcMDicSuE2TzkA1\ne55J36celfwzhJZI9do7GwfWV3/sS3fTlqeh5aR6ERcsSRVfyyoIEAg56A7YajPvTKZJxBDDPv/6\n5XpWbjRYFN9IyRdmgRCUXLQQb7SkX3tnoggfu7GaQlR6veyMRGgbpOdf5fWS39SByP4Nn965EW8M\nikb43il1uUad/Bf7fOyKRLju4EHubWrisba2k7KQXH08TpnLRa7DQWMigTOpMT+0n/0vD/5JfiKo\n5J8h9ETqB/CtDVn66ny5k9eWJVl07Rouv5fecf286dmpa7yqDktG0ySa3f9H9a2ev3v7IXLkPs74\n0VIKrv0iAPM+cA7YWXSHUom45kAHmu0m5muB9hhrcnJ4rK1t0J5/scvFmjd2M6crxqEFlRim3m+8\n/1jGkvxzHQ7mejw0JhLcUl/PRW++OeKtJicbW0rCQ9Q8qovHKXU6yXM4OByPo1s6Xg4Q2Vo9sUH2\noZJ/hjCSBpYGZnDgm8syi3D4O7liRgkPX3hG7/Hi8lRNl6hn6tVPOanoEs0afMxfb43SFbDgqqvA\n5wPAKCvBQTeHdjYB8No/t+KigW6fRAsm+WBhIQ+3tdGQSAzo+QMkbSdJwyTr2/+FkIJiMfKe/2gS\nd8Sy8Ggae888k9srK3n5jDOY6/EQy9A9BP7V0cEHt28fcPyRtjau3LmTUpeLXMOgpTuOrVl0F+wm\n6NmWhkhTVPLPEI6kk7Z8WPpQFfe9/9Z+53yhbLJme3FpGsv7ztmendo+Me5O30Ml5fgJIfvN9pE9\nPUyvpuHstEn6raMvQBPdtOxIVXqtu2crtqsW0yNxhFMrfVdmZ9NhmuQbBq+vfZ3O5zrperkLAD2p\ns3nRPPznrUGIBFdmFfZ77b1f3ottDkzQhYYx6qmenqOmq7o1LWM3kGlMJAZ9fvHWWgiXppHrcNDW\nncDWLFgmKT/1iYkOs5dK/hnCmTDoyknVZTE3HTlumRY57T5Oe/vA0sk5XjcxFyRcKvlnNI1+Y/4J\nKdGFwNA0XBEHVu7AWVxSC9O1t4m66k6qXptB0ao6LL+GM5q6z5XTpuHXdQwbul7o4s1L32TPZ1JF\n1nRTR/oMvLnZGHaEFcJL3c/rsJM2icYE9bfUk2wamOTzDYO2EW4TCT3J/6jFTm5Ny9ief6dpUhOL\nDShXcTAW4ydz5nBdRQV5DgckQOomBWe+jeXdA/dimCgq+WcII2FQ0Jp6U2W1z+ex/7wXgEe++idi\nbsG5ywbusKULQcwtSbrVsE8mEw7Q+yT/vtM8XTE3YppnwDW2HiZa18Hfb3qKXGsvs393LTLbwOh5\ndvS+wkL+e8YMEvUJsMAMmXQe7Ca8K4xuGgi/geZyohGndXcH+76wj+7N3YS29MxVrxk4SyXf4RhV\nieaqZxNEvnyo3zFPBif/DtMkIeWAiqd7olGWBQKpnr9hYCRBCovpV17NzE9/PU3Rqto+GcMVc/DX\nD5tYGMyqllz0YzdP/vp7ZHcv5IFLLN4zxIyMhEtie0beG1MmH02j35h/xLLwSYFl2RhJH/qsgcnf\ncsSwmgTZ27tITjsAM2eiF3gxkqkfeZ+u882ZM9n6t0M49R38Y/mfmN6ykorbytAtJyI7dU9BnPb1\nqX0hmp5u5XBHatHX/tcbKFyZ2+81s3tKSiRsG+cIyhd4W22Sm/uvR8jkYZ+39keujsX4R2srDiH4\nVEkJeyMR5veU2ShzuXAmwGlFYN681J80Uck/Q7jiGiXvzic0J5sdiQSPv7eF999Xwu+uyuasBYWI\nIQpFJZw2+Ac9pWQKh+g32yds21xya5gnz38Sr5VNVtXAomhJZxzaBaVNM3B/PJWUnCVZOMz+QxJv\nPraVM6w6btz4EtW+fdTeeQmamY2R11PXQYvTur4NwxFi/28klh3Hj4PWLXUcva+kEIJch4P2ZJLp\nI9ghTkZMQjs7kVL2vn8zuef/VrnsF7q6uPbgQfINgwdbW4HUqmiAywoLyQ97cJnpX9Wskn+GcMU1\nrlo4k8qKIgCeLm3n/rVlPFpSwmL/0Nk94bQwstUc/0ymOQSa2X/YJxCN40kGkLiZcda0AdeYLgut\n08KRLGDuZ04BIFCRT9Lqn3QSr1cj9BY0zUmWFqddNFNgFWIUpB7+SpHA2hploXk/j+cux2XazK5t\noeXg4kFjfWvcfyTJX4+BM+ok2ZzEWZSaTprJY/4dySRzPR4ea2/nzKws6uJxdkUiHDjrrH6ds2RH\nFKdI/1CsGvPPANFgFN2EkuIjH7PfnpfHbfPnHzPxAzz8IZNZH11yokNUTiDdofVb4ftURwc5wTBz\n+CUr+AjTTq0YcI3plXhafLhpJnBqFQBFi0rBziGZTM0OuuUrjzJzywKaFvlwvLkV/epr8JmpLUB9\n03MAkFocX4cPP3s47PkO1Vnfx8cB7MYIh753iPDO1M5edtJmz2f3kK/rxxz3j/bMg0/aNq546nsK\n7z6yqbxb03rbZJoO0+RtOTk819lJpdfLvxUV8dXy8gFbpsa7IqCSvzISjfsOE/WA3zn6HvyFX1jC\nO5bOPQFRKRNFM7TeqZ5bu7v5aV0dsw4d5tXTFuJtfh0G2SfZCmhkh2aAoxF6hhzmnDMfp+zkn3dt\nBiBn/TaKxT9Z879vh8pKCr/1H5RFUuP7gbJUpU9bSyLQCGVZfH6n5LO7bdC7cDUbVF9XTd1PU9NJ\ngy8FafhVA6XRgQ99pZQkbZvXQyGKXnqJ6mg0NdMnmurhN25p7G2bycM+HabJO3JzsYH5Hg83zprF\n50pLB7QzQzGkSv7KSDQcbCbmlkOO6x/Lp0tKRrxCU5mcNENHtwS2lHzjwAG+UlZGTlcMvDoUFg5+\nUY4LYeUR83UeOZabi8O1jYY7XgHA3Z7gYIkf3v3u1PnsbMKeLsAitzS1QNDSUklq97vfRsHtv6bo\n5z9j27wisptnsqekmfp7Gul6sYu6e1IJvLRNG5D8/97aivP55/n6/v2Uulx8aMcO7m5qwhOzcdJC\n3XMHe9tm8rBPp2myLBAgW9cH7KPwFitiYXZHkVr6J2Go5J8BWhs6iLtOvnonyshobh0jaWNKSXMi\nwXk5OeiWA/xD/1Kfs2oahfwL3+Jwv+OReXFKdqWSqyusYWUdVTDOF0MnSn5J6jmCrScBC/fSSvjg\nB+HDHyYyH5pK/oTT/ymeXvwgOz+2k7q/N4LeRKA2QctRyX9bOEylx8MSv5+XlizhI0VFvBIMMrOu\nGT/7iL/Z1ds202f75BkG11dUcHbWwPn7W/6vifW+9VjhBLZK/spIBJu7SbgycxxUOX6a4cBhgill\nbz0e3XKiZw+99eEpn7uIRZ9vZ/lPP9LvuOedC8gJFQDgjDmRef0fzEbyJDpR/AWp50uWbmLQRVnP\ncwMAV0UJ5dpv+fj2IEvaf8nfvlXH31bdxHTrNQJ7uth31CrXXZEI/z1zJj+aO5dcw+CLZWXcvWAB\ns+qa8LMfo/HIcKZH1zOy57+1u5u4bRPQdb5cXk7hIJ+2916bWtMgIyr5KyMUbo+QcKrkP1VpHgOH\nKUn2JP8Cw0CznBg5gw8tAFBaCj//OSxb1u/woivPRjML6WyP4ky40Uv6TxhIznTjYw/0JC/LYeGk\nnZl9kv/q81dxdh1Er7iSixu82H/6Bu/ZugUXrQT2drDzqM1ZdkUiVA0yDKKZOmF3Pe5QIdU3VtN8\nXzPTXowRNE3ClkVLIsEjbend7WqkPrJzJz+bNw9tiKFZKSX+aGpNg+yUqfIOaZZxyd9Mmnz3Q78l\n0j2wuuXJKh5MkHSmv6egpIfmNnAlLGpiMUwp8es6mu3EyD1G8h+C79Qq3Bxm/QNbcZh+fBUF/c57\nFpZQ7r6292vTsDHowFGQ33ss+4K3w5NP4rnrTrxPPcH/ZZ/KpYvPpdMfJqu6m52RSG9ZZltK9kQi\nVA6W/C2dxhwP0nGY2MEYtTfXsuAjh7lvSwPfPHCA87ds4YPbt1Mbm9w/6yHTZH80yiemTx+yTfiw\niS6iuGiCDoGtp//nOeOS/w8uvouz/zaXf971fLpDmTBmxCJppP/NoqSHw2Pgipu8FgqRbxgIIRC2\nC++0MdSFcTiQRj3Nj7+JZgXIX9R/NkrV2SuIG0cStWWA5ehMLTN+i9MJ73hHahbRmWfCAw/Agw/S\nON2JtzW189dbJQ7q4nFyHI4B0x0BNMsgOH0mMwJX8JP3/YQXbnmBYJkFUUlbMsnuSISPT5/Obxob\nB1w7mWzu7uZUvx/jGKuaazbF8MpmHIQQXQJbT//Q1rDJXwhxhxCiSQjx5jHa3CqE2CuE2CKEWNLn\n+AVCiF09574xHgHP3jaDmEvSuLtlPG6XEWRMYqrkP2XpbifuhMVr3d1HSjBLF76S7DHdL5nXhGNj\nF7bMYsby/ju8VZy/iuLPfr7362jhIWz/cyO6b2KaD2fUwSKfj63h1IPmoYZ8ADTbQM4rYU4HXPnV\n5/B+6zbi0TacidT+whJYEQhQM8l7/us7O1keCByzzcE3mvHaLegEcUW0zEj+wJ3ABUOdFEJcBMyV\nUs4DrgJu6zmuAz/vuXYhcIUQYsHxBPvwH9fjDevsrWon0pD+5dETRcYFliP9Y4RKeji8TpwJm9dC\noT7J301uef6xLxxC8fuLKK9bgE6C7LlHzUPPzYUf/KD3y0ReN915hxgJx8wCnAkPK7Ky2NhTxni4\n5G8UBnio+CraZ32J0n1ryEkkccWhIZEgoOvkGQbto6gUOtEa4nFuqa/nquJiIrVx9vx24DarZsgk\n/MQhNL0V0xHBE/NgO9I/e2/Y5C+lXA90HKPJpcBdPW03ADlCiOnACmCflLJaSpkE7gXeM9ZA/3bb\nUyS+mODgnFaivgh0ZtyI1ZiJhIalev5TltPrxJm0e4d9LMvGxkP+rIFlHUZi3rX/Trm8n+mOv/Yu\nABvK2aedwYzKpSO6r6eyFM30cWYgwIZQqjbQriHG+wGQLpw5fi5t+DXve/JzXFTza5J6Emcite1h\nQNfJG2Wl0In2cjDIOVlZLPb7WX9bF69+tXZAm0c/08C0FzWiToFlhHEmApmR/EegFOj7Hdf1HCsZ\n4viQHr/3JW7+5J3EYwPrz1f/oYl9C+r596cuIOlLYISHrx1ystCSOpahev5TlcPnwpGUJKQk3+Eg\n1BlDIPEX5YzthsXFzLvldOb94pxhm875+heYc8vNI7pt7oIZCGmwwuVnQzDIC52dPNHePmTPX9hO\nnPm+fseklkr+HaZJlsMx6Xv+b+3NC9BQdxh/fGA/ueVAJ0ktQSL/dZJGDM3OmhTJf7wKu41+6Wkf\nX/7i18nJ8/PK7du4oHEVvwr8jS/99Mre8/FYgsrtJfAzBzn5WYhciadpYBnbk5WedGCrqZ5TltPn\nxpmU/GzuXNbk5NCypw2N2LC99mP6whdG1m769NSfESirms1usZNp3RqmlFxXXc2anBxWZQ/xbEI6\n8U7rv1ZBilTyBwjoOvk9VUInq4Z4nNKe5J+ofpPsRCnxLgtX9pEdyuzaXRj5tyJP6ST52nwcQbCN\n0afMdevWsW7duvEKfVySfz1Q3ufrMlK9fOOo4+U9xwc4//cX0X5tmHLfclxlBjXba6k90ExOvp9A\ntpe7b34Eb8DPv338PAD8pV68m6ZG8n/pd+soq8mmc2ZmzHdWxp/T70JIjWvKygDYVL8PweR7CFow\newYH5Su01YRZ5POxrrOTTUuX4j1qq0ZIzXuXuPAV9f/FIEUCV1wCgoCuk9vT8+9b9nkyqU8kWNCz\nd3KguRMopXZTjFkr3VgRC2eBk7IWjeWJWqLTV7LJK3EAtmf0D3zXrl3L2rVre7++4YYbjiv28Rj2\neQj4GIAQ4iygU0rZBGwC5gkhKoQQTuDynrYDeMOCuhcPk9PupmZ+HcX7S9hw5pvcevmfAWha30Zj\n2ZHZPee8/wymNXl4+ekhJyCdNPb9egMhv4HriqrhGysnJVfAjezTTwvVdyLE5Ev+mt+HgyB12xtZ\n1DPU03fIR0pJZE9qooZMSkCSU5TX7x5SJMntTg3zBBwOXJqGSwi6J2mlz/p4nNKeBXGO7lRC37uu\nlacKXuHh07dRd18brmQW7avLKfivG2FOA5V8H//y6jRGnTKSqZ73AC8BlUKIWiHEJ4QQVwshrgaQ\nUj4KHBBC7AN+DXyu57gJXAM8AewA/iKl3DnYa2xccxDXYS+BkEblh2ZSWuemobSDvNrUApSC2mkk\n5x5ZMr50VRV7q5p49nuvHse3nhkO+3LZudDmgxednu5QlDRxZ3no+yE93NiJ1CZf8gew9SDtOxtY\n6PMxz+PBo+vYcZtodZSOZzrYuGAjoddCWBELnRg5hf1nLHniQc7fdRC/rpPV84khzzAm7UPfhnic\nkp5hHyMm0Omm+cFqWpPgbgix9fIdkHMn2uf/H8ybR+5iB8U8QeH0MT6vGUfDDvtIKa8YQZtrhjj+\nGPDYcNdr5YKKR6fTnm/y4avfwe6VNbjrcgl+qIM3XtpD+aEA5993Rr9rImUhfDVjm+ecSbSkTiDa\nztyhZkwoJz1PlgfJkaGTg4/UsNwYOKVwMjAdYSLV7bw9N5d4T42epj83sfsTu/FUeZCrJdveu43s\nC7PRSOAv6F9ewtYtCtu6Ceg6gZ7k7xSCWRs28P6CAu5fPPgmMhPtkbY2krZNfSLRO+bvTDjIZjuF\nu85gT/lzhOPZtBkVfKzjXoqWfgeARVWrgfs4/az3pjH6lEkxX3LBeXMoaNXpykn17itPncHqi07n\ncEmEXe+v4dCsIHMXlfW7xpGt44qf/KWKtaSO7Uz/ghAlfTzZ3t7k//ub11O1ZSY5qzuHuSo9Eq4I\ndkOYhT4f/zFjBgDNWzoJr9Fo/shhfpfzDsLf74YSySztVnSjfwqydBtiVir596wK3h+LYQjB4+3t\nmJOk6NvTHR38trERHXo/oRhJF7lswmsavPvgIc6O3Yyj/GqmJ5w4KlKL6fwf+X+wYwfi4ovTGH3K\npEj+l358Na9/vpaCr/bvBbx3/Tk0vK+BFb+uHHCNt9CDO3ryT/fUTQdSJf8pzel3AzrJpIXjhzuY\nK/5A1W1fTXdYg4p723E09k8r257YxbPmtTzy+sf544MWdz98Gd8q/BIeY2CJFsshEXHZr+f/5wUL\n2LJsGaUuF7uPqhiaLi2JBE93dLDA5+t9EK2bHvBtQ2LRldvBDLOVz74ZxPHUM/DWQ2+/HxYc11rX\ncTNp9vD9ys8/OuBYQVEOX73tY4O2z5+RixYdOIvgZONIOhCugeselKlDNxwIkoS7YpR2GdR/fA2z\nZs8e/sI0iOV246rrP0SZV2Nx/a4aLM3kH0v+hx/99ee0PXGAiF1I7lHX2w4bZ7eXWTWCoroEB24/\nwBU3pb7XJX4/r4dCLPL5SJfNoRCVXi/NySRxKVnQZzhWs7x0nVZE1stbicyI4D71MrSiYli1Km3x\nHsuk6PmPxayFpXjDJ3/y100DzZOx/0zKeBACgUUsGEWzAvhXDPwkPFnos324w7lIq6eqZ8LGFc3m\n+XeuZPcft3DpazfQuX4X9V/7M4fvfnHA9ZYhCDQsZvUfE5Rd1UjDrxoIbkyViliRlcW6zvEZ7rLk\n2BZZfWHvXu5vaaG5p3DdW7OZrKiFkD78772ApfKr+M/NwXX77zC+/4Nj3S6tMjarLF4+B19YDLoa\n+GRiJB04/JPmA5qSJgKTcEc32NmULZ2V7nCGlHfmUtA6iB5MDc9E90URejNFF65lxRVzEALmnV3I\n+f99FksvH7i3tN0zkjszFkdrN3n57S/T9McmAD5SVMT9ra20Jo7/Z/6MTZvGVDCuMZHg1VCIlmSS\nYqeThT3J/+FlO/Aaz5H9rvOJO3VKlp4LbveR4Z5JKGOTfyDbS9QD2zYd6Hf8u5f/lt/NfYTff2/Q\nJQUZx0g6cAVO/gfbyrE5RDubn9yHwKJg4Yx0hzOkRReeh1fso31DamvG5s2d+Khm8QVrR3S97Uyl\nJHvLIWwZ58ynn6XmQKqwXJHTyTlZWTzf1XWsW4xIXTw+6uQvpaQxkWBjMEhLMsm600/ngrw8rISN\na2c7c8WPySqdhevLX6Po7WMuYzZhMjb5A4R9FgfePFI+6LUXdrHo8dkEc7oJ/vXk+ERgJHW8eVNj\nNbMyNOloof2xHTgIpnqUk1TWaYsoMHew46HUpuw7nzpAtlWDa96ckd3AleopB1rduOwI2WGL0Jaa\n3tPlbjeNPT3/zmQSewzDN1JKukyTplGuHegyTQSwMRRCAvO9Xhyaxv6nwrQHGsk2o+i5eamqqGVl\nw90u7TI6+Ue9Ji01RwopPfv1TeyrOsx5v1zKvF353PLlP/Hzb9zbe/6O//0HrU2Tc4rcUIyETk7h\nsWuFKye/hLuLnL1x0ILpDuXYDIOo/xDRl1oBiLzWSLevZeTDH55UvSItmYODCDvPWIy37UhZhxKn\nk4Z4HIDcF1/k7qamUYcYsW0sjmw4M1KNiQTlLhfzPR7MPr90tt/fxszk69jf/d/+m95Mchk9mBx3\nJ4g9bdPw2VaeuX8D83aWMP2BIk5bMZcdOQfxPZqdmjf8A9i3vY5p38vi9n/9HW+HH00KYt4o//ni\n4LOJJgtnXCO3/Og5EcpUE8tJkNc0DdvRnu5QhtVWIfHvcFPzoxrydubRWTHyvTekN5X8hXQhiCLK\nc3C8euSTb4nLxQt9hn3MMfT8u3qqhDaPIfkXO518pKiIT+/ZA0AyaCL+cpBZiXUYX1k/6ljSKXN+\nTQ0icl4Xvm4vz694g/z/9rLt7AOced4iALpyI8w86GPO3gA/+PidPPipdThMOHPdLDSpEZrVyZKN\n5cO8Qvq54xrFMwrTHYaSZlaJEyMxE9OY/JsYOVatxNY6aLitgbqKu4guGPnUTM3fZ+2OFsFdXohm\nHln/U+x00hiP9ybw3EG2hxxOsOfa0Q77NCYSFLtcfKqkBHPNGgD+f3tnHmdHVeb976m6dfde053u\ndDp7QhJCNiGLECCKwyKK4Iago4IwzKs4MyoziIwvLjMuuPvReXVcXhUVZEAUVBRxiCCLGSAJIZ09\nnaSX9Jbb3bfvfqvqzB9V6SW93Szd997u8/188um6tf7qyb1PPfWcc57z/Ld7iBrtpBYf6Z/0vlgo\nauf/kW//LZc99BoaLz1M4IES7n78lv5tsdIYhil4ZW0b5Vtn4MkY7HzPEXRbMPMDJdz5i5sQkoJO\nA7Fk1ygAABzwSURBVKXjaXQT6udVjb+zYkoTXl0DQNZfGIOcxmL1DW8lKA6ROpSiJvvf1F2Yez93\nPex1ylUDtpakdEkdyAC26Qx0rPN6ac1kOOgO9sqeTuTvFol7treXP0Yi3H3oEKkcCse1ptPMch28\n7g7sOrqrCyOwjdCm152yjnxT1GkfgMUr6rnrF7cMW58uS5L1SP7+qesIhp0GMjNr8p3yh7j99ncB\nkPLDkf1tVJ3upBgTzLH9baT8EPaeQd12xZRg04cuIfOff4P9npvyLWVcSjauoyr7I1q01WyIZym/\nIfc6Nlq1nzJ20sNaLD1FzaL5dIlGzG4Tb7WXOp+PY5kMB1znnzmNcg+9polf09gZj3Pz3r00p9O8\nv7aWJePUzzqR9hlMbP+rXHq8k5o77jllHfmmqCP/sdBrNDpnmv2OH8BjeLj9y+/q/5z227QfLdw6\n+ccaO0j5JVoB1jFXTC76qpUEUkcIfe1z+ZYyPoZBItRGWB6i6xv/AQtyH5fgrQ+wmn9BJ4HpyVB3\nznwMGaXtoTaiW6NUGQZJy+LWvXsB+ovHnQq9pskit8dU0o34c3l/GMn5l7b20FFtwbLiK7k+ZZ3/\ndXe8gdarW8bcJ+O1OV7AaZ9DT++lt0zV9VG4+HxQJIFAZG4z58l7WXj5pad0XFXlHI4bPtf5Zymb\nXUKWmRz64CEarm9AE4Km176WhvXruWXWLDKn2eC7obSUF88/n4/Ncdr9cmk4PpZOM8s3tJ5YsE8j\nXaRZ2Snr/Jeumssd//n+MffJeC3ixws3h5rc0s6+ZYVZt12hGAtz2XKiwXa0mafWWWHRhWt5bs3d\naCTIGiZCE0hsjl60n0RngmwkS4VhMNvnI6Rpp5z2aUwm+VlHB2UeD+eXlHDXvHmsDIVyajsYKfL3\npwKIucVZbn3KOv9cyHotkj1JGrYdxsye3iTRf3pkK99c89BZVga/vu2HVB+dT3Rx4T6cFIrReMMt\nf0vZJW845eNmLCzjzVs/CVqSrM9xyFWVb6e84zZ6vLuJbYv17+vVNNKnGPl/u6WFLT09/WWYAQwh\nyObwEBns/Pc/EGHffcfxZssIryzO3nhF3+B7JmSNLJk+k51XHeDJWf/DP2x7R87H/vybvyfS0kO6\nO835O+bxtdvvG7Eyaa48/okHCXy1nZ4bfGSbeqn68yKe3uRh3XsLt4iXQjEa+pVXELjyitM+Xook\npttctyKSYEUEdup7aHm2hYrLnHEvXiFOOfJfEHDGDDS5A8XAdf7jPETilkXGtil3u5Y++9UIno4k\n9VJSe8HwGkXFwLSO/E3DxGqWhGI6y3ZVnVL0f/jRFrJ/EmTc+Ubt/zmz52jTX5ro856D/yEfgZdq\n+dzdJez61iLeuibHYfEKRSEhxBm1T0jvETLljoN+ouKd/PbGn+LXX6TtB61I11H7NO2Uc/5xt4H3\n+sc0rISzbGjauM7/RL7/RO3+aO8+qps68WpHmLls9SlpKBSmt/P3mNQcqaFxUQQpoPlIV87H6ikD\nX8qH3WcTqbQIR8+sxnhUhHnyMkF7VRU9JTN43/uW8+CKFZSdxiAWhaLYkRU/IzXHSfFcHvkFV//s\n3TTN7CTbF6P3WWeEr1fTTrm3T9yyuGfePMJf7SKxxxkw5xFi3AbfrmyWasOg5/ko2ahJfccxfLZG\nmX2E0Pwlp3GH+WdaO3/LMJnfGCRa2008bLNvx+GcjzXSBoGkF5HUaJsVpTxyZo0+espDWbqdzz9Q\nxT0PVvLOeXVndD6FopjJanVUVAxNefbNez1JfTuxfc5DwXcaaZ+EbRPUdRLdCSJHnVIZuaR9ErZN\nUNP47dUH+PNnOgkl3YZfbzMU6fza09r5mx4L3RYYsz0kAxat+3OfFNvIegnEvegpg96qHiq6dfp6\nT3/ovSftA79Fw/r17N+wAW8RFYhSKM426cs/ydLrrh+ybskdd7Cku4OGl18FYP4/dRDYfWr1eeKW\nRcjW8KQ9NG516vPk0uCbsm0Cuo6RjHD0qTYMM4yPNmJV3WMeV8hMaw9je52cX/2aWlKBLD2tuVdM\n9KYNwjEdI+3FLjGJltk8+dDW09bizXgRYdCEUIO6FNOey39wPcvePDSdcu6159AdSpP4SzMA5b/s\no/KFU+sKHbcsSmJOlB/d3gbkFvknbZuAEMxIS4IHm9GsEl7Dh9HWFX6tpdGY1gnlExOjb772An71\nvWdIRdLs2HqApn3HAAiVBnjdNReMeKw/5SUcF/iTftLhOD0VSaIvRuADp6fFl/bhmzF+fRGFYjrT\nWybROm3srPPbPVKS28Qu+xIJSnWduGXh7XM6aVitTjdqQ9PGzfknLYtwr0DHpLa3BLAxRBcz1q0/\n/ZvJM9Pa+eOVRCot6uZWkfZlsKI2u65rxJ/SsDXwd5v85kfP8Kb3XDzsUF/SMV15d4h0ZR99ZTGS\nTelh++WKL+WlpHZav4gpFOOSmmEQPugjddiJ+JOtuZVn+bcjR1gdDhO3bexjzhu+dlxi9pp4co38\nmyRe2on7bIz0QsRbrmXh1e8+sxvKI9Pa22h+QXeF8yXK+jKIhEblcQ+rnl7K2zsvo2luisPbRy4R\nEUxo9Jba1LR5KK0tIVWSwNPjG3Hf0eg51sOhFw4A4E8a1C4s0nHiCsUkYdWV4U2F6d3tRPxaOjcX\n1pxOczybJWFZmE29gE1Z81Ia3tWQU9onZdt4jiYJyuPUa98nSCPi4YdhdXF284Rp7vwvvmkd0Suc\nFn/Ll8XXF8TWnEqhAMlgmljH8JyemTUJxQWRqhS6LZi1qBpZbROKhoftOxqR5gg75zxK82sbePRD\nPyIY11myqvDnF1Ao8ol36Ry0bCkHPrcfACFyS140pdNEslniloXd0ocPp3NH5M8RgjHJgx0d/Ouh\nQ6Men7RtfEdjSL2b5cnnWc/NRTVr10gUt/ozZNOVq/nIt51RuXbAovx4Kb3lAwO90v4UVs/wPPzB\n3a1kDWib286BxXHOv3Q5lUvKqW4v5d+v+D4//tJj4177ma8/zuG6mdzz2QCl36nGlxEsnD/z7N2c\nQjEFqTlvOeGSL3O8/ggyfBBhjt85QkrpRP6mSdy2Ee19lLIHI/QATbWvcNnbI7R1JdmfHL2UStK2\nCTXHyfh6ib4+9/kJCpnpnfMfhFamUXssSGt9vH9dxp9Biw2fe/TV5/dDCO56aqC2+rorz6Pv39vw\nbV3IwZ52+Oexr9f6YgddC8r50N+9hs+nd7ByG1yq6vYrFGMyb+0KfNYTfM/Yzo2+DyLM8QOm49ks\nKdsmks2SjZv4DppoopuL4t8l1Bdkf+p3WJ0avTNGH+GftCwqO9KkQklKf3w//PGPZ/O28sK4zl8I\ncSXwdUAHvi+l/OJJ2yuAHwILgRRws5Ryl7vtMBAFLCArpSzYpvEVVywhdL9NMjjw9DeDGbx9A/MB\n/OmRrVx23Xr4BHTWxIYcf/6mZXxl/cuk5yWYsXMmf/ivF2j44mE0W8PWJImZfdzyvbdSM7sSAL0r\nRO+yPt4+cybxD63k0a6u/qHjCoViZGpXzCKVDPDl/4rzSlkWzRr7N5O0LKqfew5wHgJ/c1+W2mfr\n6fM9B2moj9rsLo+SyZT1z/A1EinbpqzbJlNuQX093FT4k+qMx5hpHyGEDnwLuBI4F7hBCLH8pN0+\nAbwspVwNvBf4xqBtEtgspVxbyI4f4I03Xkik0iI1yPmLEvCmnEbcn3/z93T9nyiJWIryHo33bh1e\ntOpjf72RhZfMoaw7yK57G9Fsjdj8XhJ1UaoP1fDAm/7Evbf8GDNrUtlZg7bYeat4X20tD5933uTc\nqEJRxHi8Gq3Pt3Dgkb0cKQ8ixnH+xwfN03vcNImEnYbd46Eqnv3mS/x1/T2EszaZrN0/L/BIJG2b\n0l4dq3bqvJ2Pl/NfDxyQUh6WUmaBB4C3nLTPcuApACnlXmC+EGJwjdOiCGc9hoeW+h6y4YERg0aF\nh9Xbq/nipp/QceA4ZT06O7ceJBGSQ2YIG8wl15xPZUTnnN21rL93OXf/8lbufvRWLn1wNXOOVrLq\np3N5cNHPSPp8vP724V1IFQrF2JyzoYLXvHk2Upfo4+T8Y5bFQr+fgxs20JnJgDs+IBtMcdGHX8PV\nz3wcS7MR1sDE7if4TVcXy7c6AzeTtk1JzMC7oHRibioPjJf2mQ00DfrcDGw4aZ8dwFuBvwgh1gPz\ngHqgEyfyf1IIYQHflVJ+76yoniBWf34RNfWV/Z/LZpcAsHbrHF6aewh/WvDK03spCZWMeo66uVU8\nX2pzrK6XN71hYFLnpavmoj+tse3p3fxlSx0vX6XzTJ1q4FUoThvNGjftE7MsKg2DBX4/aSkJJGEe\nP+GJRdv797E1G91iWNrnwwcOcDiVwpaSpGURTAQpXzN1am6N5/xzqZf6BeAbQohtwE5gG06OH2CT\nlLLVfRP4oxBij5TymdOXO7Fc8sY1Qz6vff1y4p/p4Oj8BHbUiRg6Xz2OJzhy1H+Cruo4sVXDa34s\nXlHP4hX1zL6xlw/qOkaRdxVTKPKKJtHNsX9DMcsipGn97WmBJGikWNQ2EMFLYeExnX0tKdGF6O8h\nVGUYNKfTWJ0WtpZl1tqpM7/GeM6/BRjc+XwOTvTfj5SyD7j5xGchRCNwyN3W6v7tFEI8gpNGGub8\nP/WpT/Uvb968mc2bN5/CLUwc6y49l+/dswff/w+hJZz8vNZhkPKPXUzq2ic3MWPm6K+HF5aVnVWd\nCsW0RLfRR4j8G5NJ5vn9aEIQsyzC7qxdV1dWckHDC6Q1i8Dff6l/f6nZeNyMT9Q0qTAM4paFTwjO\nC4XYm0ggW0wwosxYdHLiY/LYsmULW7ZsOWvnG8/5vwgsEULMB1qB64EbBu8ghCgDklLKjBDiVuDP\nUsqYECII6FLKPiFECLgc+PRIFxns/AuNmnmVpBMWnpRTwjXcU0o6MHYZhxM9ehQKxcQh9JEj/+te\nfZWvL17M5oqKIc7/N6tW8VjnE7yyeA5v/6d1/ftLYaG7uYpe1/l3myblHg/LgkH2JhKYkTQeEcc7\nq35S7m0kTg6MP/3pEd1pzoz5ziSlNIHbgT8ADcAvpJS7hRC3CSFuc3c7F9gphNgDXAH8o7u+BnhG\nCLEd+CvwGynlE2ekNg/MW1FPMKFhpLxYmqQiEibjO7UysgqF4uwjdEaM/I+m0/0Dtk44/0xnBjNm\nomV17MDQsTtSDET+J/L+3e5DYGkgwJ5EAjuewtYyMIUmVxr3TqSUjwOPn7Tuu4OWnweGJcKklI3A\nmpPXFxvLVs2lK9VEIOmno8ZkVqvBkaXZ8Q9UKBQTijDEsN4+Scui2zT5YVsbO+NxFvr9hHWdQ3cd\nIrwqjG56kKGhbk9q1pC0D0CPG/kvDQb5bSSCP2lhalMr6FMtjuPg83tJBKG8O0hkRgxNCmRQlV5W\nKPKN5tEwTIbM5tWacRz0C9EoL0Sj/ZF/575OOo52oJseCA8twHgi8g9pWn9f/27TpMJN++xJJNAy\nILWpFfRNnXeYCSQRtKhp93BwUxevCsncS6ZOdy+Fomjx6/h7nEi/xuu0ybWk05ToOn2WRVsmQ8yy\nKPd4iO5sp93qo8LyopUMd/66BfU+H+3uoLAe1/nP9fvpymaxLQ3E6ZdsL0SU888F983yA994m2rM\nVSgKBOE38Kedmj2Dnf/FZWXsTiRoSafpsyzqvV6CvWHsg+1odil6xdA5d080+K4Jh9mTcKr4dmez\nlHs86EKwOBBAM20QUyvyV2mfHKhpd56RyvErFIWDCHjwpywibqrGtG1e6utjaTDIoY0bCWgazek0\nJVGBkH48SQ/C9mFUDe2GLYVNXSts3G3QEHcKO55I+wDcVFvLuYc7EEytyF85/xzZuyz3+X0VCsXE\no/u9+DJO5A/weCTCD9vauLS8HIBar5cj3QnmnedMmOTJ+BG2j8BJY3CkZrHpL2B8NkGDG/mfaPAF\n+OicOazeewRbH3uS92JDOf8ciP5IY/Mvir7jkkIxpRAhL96M7I/89yYSvL+2lrdUOTPi1Xq9dLYP\nFGrUzSBS+gnPqhhyHilsggmw+9poz2S48+BBmtJpKoyBIm5aWmIbyvlPO6553yUsXTU33zIUCsUg\nPEEfRlb2V+7cn0yyOBDo317j9aInobO8iw28G80sBTyU1s8YeiJhEUhCXXcrj61cSXM6TUM8zsbS\ngTcELSuxp05BT0A1+CoUiiLFKPVDlv60z4FkkrdVDxQUXhQIsCMBsxJR/LQCPsBkRu3QgopSkwQT\noAmdyyoquKxi6JsBgJ4V2FOnoCegIn+FQlGkGCV+DFP0p332J5MsGRT5/9uCBXw9kiGc6eW/S98E\ngIZJee1JaR/Nxp8Gjzm0YGOmK8uBHzhz/eqmwPYWRXX6nFHOX6FQFCXe0iC6qRHJZjmWTtNtmszx\n+YjtjGGbNpoQ0N5H3Miwqflhanmcc8XH8YW9Q08knFy+Zg3tAvrYBbtovqXB2WZqyMDwKV2LGeX8\nFQpFUeIvC6JbGlt6enjHrl3cXFuLR9NouKGBni09AKS74th6Gl+Jl2XcS6XcMfxEmtuQK4NIOVDF\nPnzUOUe8PYtu6cr5KxQKRSEQqAijW4LvnHMOl1dW8vG5TqeM2JEYx3cdB8DqTmLqA4OztgfOH3Ye\nKU44fJ1kxCndkk3YeDAx9L3sezKBbumI4NRq8VUNvgqFoigJVobpwuDa6mqudRt6zZiJFtM48pVG\nMs9nkNE0lsdx/s986QXOu3HVsPMIbSDa7zqaYe4MD12NWbxEqbSOsOPpFqpsD9rJ6aIiR0X+CoWi\nKAlWhhFYWMmBQovpZmcUrqfJS++eXoiZmG7Jzovv2EBFXWDYeTQxcHxbY8T9G8UrY9hGC7GXD6LZ\nBnqpb9ixxYxy/gqFoigpKSvFQx/ZyEBap/NABx6cXH3PwU5Ewsb0jj0bbSib6l/uPtgOQMfeVjTR\nR9+MKKGmKJptYJQOf3AUM8r5KxSKoiRQ6segj96Wnv51TS8cppwdVPAcwVgIPalh+sZ2/tJwunAK\nMsSPdgLQ19iO1OKkF2qU9vhAevFVKuevUCgUeUfzaGgiyrGGFgDMqEn8d70EaGU1dyNEHCMewvKP\n0z/f42z3EiHd6vYSao1geeKEL5pNIFOKsIP4q0om9H4mG+X8FQpF0WLpMSJ7nVRN5PEIWqNOb8k2\nAHwcx0hUYgXH7tciPY4bDHMI65CTQrI742SNFLM3bUTTO5CyjGC1cv4KhUJREJieOPHGbgBadrTQ\nXPUUh+ZbPPGxP+CTEYx0NfZ4vXS8Tv99Q9+P55jzFqD1pDB9GWaefwkVbMWvv0z5nLIJvZfJRjl/\nhUJRtGSNJNl2pwZ/05/2cuHR/YSqr+DyL1+O6XFSOGKcXjrCcNxgpqyFkh4nr6/HTLJ+E61uNgs9\n32ad/bFhZSGKHeX8FQpF0ZL2ZpFdzry9ngMWh2dobPzp/wXADDTgF/sRs3KL/OPLNAKZEnZ+phlv\nQsMMSRCC1OL56BJKKmom9F4mG+X8FQpF0ZIO2Oh9TnkGX7SM7nOqqZjlFGjrm/ESG+Xf4Z0THvMc\nwnX+/nWr0Su/ztOf7aS0azF2nfNGUf3N78Ovf40onVplPZXzVygURUsmLPDEdaJbowgS+FYu699m\nB51SDrNnLR/zHCecf/mmi1mZ+D2//I9PEtlwKzM3ujV/Xvc6uOaaibmBPKKcv0KhKFqyVRqhruVs\nu2QbZb77WXDRxf3b5n3pKzz2jp9w7tsuGvMcwu/0Bgqdu4jSyloevuc51rXGWHrOxgnVnm9UbR+F\nQlG0mAs1OiPX0/WRf+Wm2x7Duuzn/duWv3EBy9+4YNxz6H4DsAhXV+A5fJTy3/2O8pdegne+dwKV\n5x8V+SsUiqJlZt0qVh1L4vvO3Txfu5Fw9amPwtX8HjQy+MOl4PE4KZ5PfxpCoQlQXDioyF+hUBQt\nK9/1Zl7+9R6W7ttJ+FtfPK1z6H4vGhk0/9Qq3zAeyvkrFIqipW51NXUN957ROfSgF0EGxNSapnE8\nxk37CCGuFELsEULsF0LcOcL2CiHEI0KIHUKIvwohVuR6rEKhUOQbo8xAF/F8y5h0xnT+Qggd+BZw\nJXAucIMQ4uR+U58AXpZSrgbeC3zjFI4tSLZs2ZJvCSNSiLqUptxQmnJnsnXVrfUyP3D7mPsUqq3O\nhPEi//XAASnlYSllFngAeMtJ+ywHngKQUu4F5gshZuZ4bEFSqP/RhahLacoNpSl3JlvXzIoaPOO0\n7Raqrc6E8Zz/bKBp0Odmd91gdgBvBRBCrAfmAfU5HqtQKBR5pXzxeVR97JP5ljHpjOf8x54FweEL\nQLkQYhtwO7ANsHI8VqFQKPJLOAx3Tr8mSSHl6D5aCLER+JSU8kr3812ALaUctU+VEKIRWAmcl8ux\nQgj1kFAoFIrTQEp52l2Uxuvq+SKwRAgxH2gFrgduGLyDEKIMSEopM0KIW4E/SyljQohxjz1T8QqF\nQqE4PcZ0/lJKUwhxO/AHQAd+IKXcLYS4zd3+XZyePD9yI/hXgQ+MdezE3YpCoVAocmXMtI9CoVAo\npiZ5re1TKIPAhBCHhRCvCCG2CSG2uusqhRB/FELsE0I8IYQon2ANPxRCtAshdg5aN6oGIcRdrt32\nCCEun0RNnxJCNLu22iaEuGqSNc0RQjwlhNglhHhVCPEP7vq82WoMTfm2ld8deLldCNEghPi8uz6f\nthpNU15t5V5Hd6/9mPs5r7+/UTSdPTtJKfPyDycVdACYDxjAdmB5nrQ0ApUnrbsX+Bd3+U7gCxOs\n4WJgLbBzPA04qbbtrt3mu3bUJknTPcBHR9h3sjTVAmvc5TCwF2esSd5sNYamvNrKvVbQ/esBXgA2\nFcD3aiRNhWCrjwI/Ax51P+fVTqNoOmt2ymfkX2iDwE5ueL4G+LG7/GPg2om8uJTyGaA7Rw1vAe6X\nUmallIdx/qPXT5ImGG6rydTUJqXc7i7HgN0440fyZqsxNEEebeXqSbiLXpyAq5v8f69G0gR5tJUQ\noh54I/D9QTryaqdRNAnOkp3y6fwLaRCYBJ4UQrzo9lgCqJFStrvL7UA+JvAcTUMdjr1OMNm2+7Bw\najn9YNCr8KRrEk5PsrXAXykQWw3S9IK7Kq+2EkJoQojtODZ5Skq5izzbahRNkF9bfQ34Z8AetC7f\n36mRNEnOkp3y6fwLqaX5IinlWuAq4ENCiIsHb5TOe1Ve9eagYbL0/T9gAbAGOAZ8ZYx9J0yTECIM\nPAz8o5Syb8hF82QrV9NDrqYYBWArKaUtpVyDM+r+EiHE607aPum2GkHTZvJoKyHEm4AOKeU2Ro6q\nJ91OY2g6a3bKp/NvAeYM+jyHoU+uSUNKecz92wk8gvO61C6EqAUQQswCOvIgbTQNJ9uu3l034Ugp\nO6QLzuvoiVfLSdMkhDBwHP99UspfuavzaqtBmn56QlMh2OoEUspe4LfA+RTI92qQpgvybKsLgWuE\nM0D1fuD1Qoj7yK+dRtL0k7Nqp4lopMjlH05jz0GcxgkveWrwBYJAibscAp4FLsdp7LnTXf9xJrjB\n173OfIY3+A7TwEDjjhcnCjiI2213EjTNGrT8EeDnk6kJJwr6CfC1k9bnzVZjaMq3raqAcnc5ADwN\nXJZnW42mqTafthp07UuBx/L9nRpD01n7Tk2I2FO4qatwekYcAO7Kk4YFrtG24wxSu8tdXwk8CewD\nnjjxhZ1AHffjjITO4LSF3DSWBpxS2geAPcAVk6TpZtfJvYJT0O9XOHnRydS0CScHuh2njtQ2nLLh\nebPVKJquKgBbrQRednW9AvzzeN/tSbDVaJryaqtB17qUgZ41ef39DbrW5kGa7jtbdlKDvBQKhWIa\noiZwVygUimmIcv4KhUIxDVHOX6FQKKYhyvkrFArFNEQ5f4VCoZiGKOevUCgU0xDl/BUKhWIaopy/\nQqFQTEP+F2ZEdaLhkq/CAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x14d7d36a0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#out of sample results\n",
    "for i in range(5):\n",
    "    plot(np.cumprod(d[:,[i]]+1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.4.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
